package com.sry.blog.sys.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.sry.blog.sys.model.Article;

import java.util.List;

/**
 * <p>
 * InnoDB free: 10240 kB; (`author`) REFER `blog/user`(`id`) ON UPDATE CASCADE 服务类
 * </p>
 *
 * @author SR_Y
 * @since 2022-01-05
 */
public interface ArticleService extends IService<Article> {
    /**
     * 创建或修改文章
     *
     * @param article 文章
     * @return boolean
     */
    boolean creatOrUpdate(Article article);

    /**
     * 通过id获取
     *
     * @param id id
     * @return 文章
     */
    Article getOneById(Integer id);

    /**
     * 通过文章属性获取
     *
     * @param article 文章
     * @return 文章
     */
    Article getOne(Article article);

    /**
     * 条件分页查询
     *
     * @param article  文章
     * @param pageSize 页面大小
     * @param pageNum  页数
     * @return
     */
    List<Article> list(Article article, Integer pageNum, Integer pageSize);

    /**
     * 分页查询
     *
     * @param pageSize 页面大小
     * @param pageNum  页数
     * @return
     */
    Page<Article> list(Integer pageNum, Integer pageSize);

    boolean updateStatus(Article article);

    void readCountIncrease(Integer id);

    List<Article> getRecentArticle();

    List<Article> getHotArticle();

    List<Article> list(Article article);

    long count(Article article);


}
